/*
 * 文件名：CloseCallBackTemplate.java	 
 * 时     间：上午11:32:32
 * 作     者：lyf      
 * 版     权： 2012-2022 湖南智软网络科技, 公司保留所有权利.
 * 联     系：http://www.073586.com/
 */
package com.message.callback;

import java.util.Date;

import com.cz073586.tools.util.Log4jUtil;
import com.cz073586.tools.util.Tools;
import com.local.common.LogInfoConstan;
import com.local.model.Log;
import com.local.service.face.LogService;
import com.message.utils.MessageCfgManager;
import com.message.utils.NetworkUtil;
import com.qianhai.common.spring.utils.SpringContextUtil;

import common.message.receive.call.SocketCloseCallBackTemplate;
import common.message.receive.entity.CloseNotificationPojo;

/**
 * 类描述:客户端关闭
 * 
 * @ClassName: CloseCallBackTemplate
 * @author liyf
 * @date 2015年10月11日 上午11:32:32
 */
public class CloseCallBack extends SocketCloseCallBackTemplate
{
	
	private static Log4jUtil log = Log4jUtil.getLog4j(CloseCallBack.class);
	
	@Override
	public void invoke(CloseNotificationPojo closeNotie)
	{
		
		try
		{
			LogService logServer = SpringContextUtil.getApplicationContext()
					.getBean(LogService.class);
			
			if (!Tools.isEmpty(logServer))
			{
				Log logInfo = new Log();
				logInfo.setCreaterAt(new Date());
				logInfo.setSummary("网络中断");
				logInfo.setDescript("与云平台连接失败，请检查网络是否畅通.");
				logInfo.setLevel(LogInfoConstan.LEVEL_SERIOUS);
				logInfo.setSrc(LogInfoConstan.SRC_SYSTEM);
				logInfo.setStatus(LogInfoConstan.STATUS_UNTREATED);
				logInfo.setCls("com.message.callback.CloseCallBack");
				logInfo.setModule(LogInfoConstan.MODULE_MESSAGES);
				logServer.addLogInfo(logInfo);
				
				// 检查网络是否畅通如果畅通，自动修复
				boolean isPing = NetworkUtil.checkHost(MessageCfgManager.instance()
						.getCfgPropertiesByKey("server_host"), 6000);
				if(isPing)
				{
					super.invoke(closeNotie);
					logInfo.setStatus(LogInfoConstan.STATUS_TREATED);
					logServer.updateByPrimaryKeySelective(logInfo);
				}
			}
			
		} catch (Throwable t)
		{
			log.error("", t);
		}
	}
	
}
